package leetcode;

import java.util.LinkedList;
import java.util.Queue;
import java.util.Stack;

public class Day17 {
    public int deleteAndEarn(int[] nums) {
        int n=10001;
        int[] arr=new int[n];
        for (int i=0;i<nums.length;i++){
            arr[nums[i]]+=nums[i];
        }
        int[] j=new int[n];//i位置投
        j[0]=arr[0];
        int[] g=new int[n];//i位置不投
        g[0]=arr[0];
        for (int i=1;i<n;i++){
            j[i]=g[i-1]+arr[i];
            g[i]=Math.max(j[i-1],g[i-1]);
        }
        return Math.max(j[n-1],g[n-1]);
    }
}
class Mystack {
    Queue<Integer> que1;
    Queue<Integer> que2;
    int size;
    public Mystack(){
        que1=new LinkedList<>();
        que2=new LinkedList<>();
    }
    public void push(int x){
        if (!que1.isEmpty()){
            que1.add(x);
        }else if(!que2.isEmpty()){
            que2.add(x);
        }else if(empty()){
            que1.add(x);
        }
        size++;
    }
    public int pop(){
        int ret=0;
        if (empty()){
            return -1;
        }else if (!que1.isEmpty()){
            for (int i=0;i<size-1;i++){
                int x=que1.poll();
                que2.add(x);
            }
             ret=que1.poll();
            size--;
        }else if (!que2.isEmpty()){
            for (int i=0;i<size-1;i++){
                int x=que2.poll();
                que1.add(x);
            }
             ret=que2.poll();
            size--;
        }
        return ret;
    }
    public int top(){
        int top=0;
        if (empty()){
            return -1;
        }else if (!que1.isEmpty()){
            for (int i=0;i<size-1;i++){
                int x=que1.poll();
                que2.add(x);
            }
            top=que1.poll();
            que2.add(top);
        }else if(!que2.isEmpty()){
            for (int i=0;i<size-1;i++){
                int x=que2.poll();
                que1.add(x);
            }
            top=que2.poll();
            que1.add(top);
        }
        return top;
    }
    public boolean empty(){
        if(que1.isEmpty()&&que2.isEmpty()){
            return true;
        }else {
            return false;
        }
    }

    public static void main(String[] args) {
        Mystack mystack=new Mystack();
        mystack.push(1);
        mystack.push(2);
        mystack.pop();
        mystack.pop();
    }
}
class Myqueue{
    Stack<Integer> stack1;
    Stack<Integer> stack2;
    public Myqueue(){
        stack1=new Stack<>();
        stack2=new Stack<>();
    }
    public void push(int x){
        stack1.push(x);
    }
    public int pop(){
    if (stack2.isEmpty()){
        while (!stack1.isEmpty()){
            stack2.push(stack1.pop());
        }
    }
    return stack2.pop();
    }
    public int peek(){
        if (stack2.isEmpty()){
            while (!stack1.isEmpty()){
                stack2.push(stack1.pop());
            }
        }
        return stack2.peek();
    }
    public boolean empty(){
        if (stack1.isEmpty()&&stack2.isEmpty()){
            return true;
        }else {
            return false;
        }
    }
    }



